#ifndef __VECTOR_H__
#define __VECTOR_H__

#include "matrix.h"
#include <iostream>
#include <cmath>

namespace t2c2 {
class Vector {
public:
	Vector(const unsigned int = 1);
	Vector(const Vector&);
	~Vector();
	double inner_product(const Vector &) const;
	Matrix outter_product(const Vector &) const;
	Vector scalar_product(const double &) const;
	double length(void) const;
	Vector normalize(void) const;

	unsigned int get_row(void) const;

	void print(void);
	
	Matrix to_matrix_column(void) const;
	
	double& operator[](unsigned int) const;
	Vector operator-();
	Vector& operator=(const Vector&);
	
private:
	unsigned int row;
	double* data;
};

Vector operator+(const Vector&, const Vector&);
Vector operator-(const Vector&, const Vector&);
}

#endif
